/*
 * @Description: var声明的变量的作用域、NaN、转义字符
 * @Author: zzj
 * @Date: 2021-09-07 15:49:35
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-07 16:34:08
 */

function foo(){
    if(true){
      var a = 3;  
      console.log("inner",a);//inner 3
    }
    console.log("outer",a);//inner 3  //没有块级作用域
  }
  foo();
  //console.log(a);//error!

  //如果在函数中定义变量没有加var，该变量为全局变量
  function test(){
    message = "hello"; 
  }
  test();
  console.log(message); //可以访问

//用var操作符定义的变量将成为定义该变量的作用域中的局部变量,例如：文件内的全作用域
// 分析
var a = 1;
function b() {
  a = 10;
  return;
}
b();
console.log(a);//10

//系统的全局作用域
// 分析
x = 1;//window.x  global.x
console.log(x); //1
function y() {
    console.log(x); //undefined
    console.log(this.x);//1
　　var x = 2;
    console.log(x); //2
}
y();
console.log(x);//1

//函数作用域：局部作用域
// 分析 
var a = 1;
function b() {
  a = 10;
  return;
  //a函数声明，提前变量a，将a认为是函数b作用域的变量，具有局部效果
  function a(){}
} 
b(); 
console.log(a);  //1


var v3 = 10/'a';
console.log(v3);//NaN
console.log(typeof v3);//'number'

/*
转义字符
\n	换行       \t	制表       \b	退格        
\r	回车       \\	斜杠       \'	单引号       
\"	双引号
 */
var str = '\"湘南\"';
console.log(str);
console.log(str.length);

var s4='a\r\n\t\t\tb';
var s5='a\'b';
var s6="a'b";
var s7='a"b';
var s8='a\"b';
console.log(s4);
console.log(s5,s6,s7,s8);